package com.gem.day11;

import java.util.List;

import com.google.common.collect.Lists;

/**
 * 本类用来演示Java泛型
 * 
 * 泛型是Java 5.0提供的特性,它的作用是用来约束数据类型
 * 
 * 注意:泛型没有多态性!
 * 
 * @author easonsy
 * 2020年7月31日 下午2:26:21
 */
public class GenericDemo {
	public static void main(String[] args) {
		//List<String> list = new ArrayList<>();

		//泛型通配
		//注意:如果泛型是?通配时,集合只能添加null元素
		//List<?> list = new ArrayList<>();
		/*list.add("abc");
		list.add(123);
		list.add(true);
		list.add(null);*/

		List<Integer> integers = Lists.newArrayList(1, 2, 3);
		List<Double> doubles = Lists.newArrayList(1.0, 2.0, 3.0);
		print(integers);
		print(doubles);

		System.out.println("----------------------------");

		Demo<String> demo = new Demo<>();
		String resultString = demo.method();
		System.out.println(resultString);

		Demo<Integer> demo2 = new Demo<>();
		Integer resultString2 = demo2.method();
		System.out.println(resultString2);
	}

	//泛型通配指定上下限
	public static void print(List<? extends Number> list) {
		list.forEach(System.out::println);
	}
}
